﻿#ifndef _USER_H_
#define _USER_H_

#include "capldll.h"
#include "lib_iqueue.h"

//MsgFlags
#define NON_BLOCK_SEND      0X00000002U    //传输缓冲区将在传输信息前清空 - 信息不会被其他信息阻塞
#define NERR_FLAG           0X00000004U    //CAN 收发器的 NERR 标志在接收报文时处于激活状态（系统处于单线模式）
#define HIGH_VOLTAGE        0X00000008U    //将在高压模式下发送或接收报文
#define REMOTE_FRAME        0X00000010U    //远程帧
#define TRANSMIT_ACK        0X00000040U    //发送ACK
#define TRANSMIT_REQUEST    0X00000080U    //传输请求（等于 DIR==TXREQUEST）

typedef struct 
{
    uint16 MsgChannel;//1-32
    uint32 ID;
    uint8 DIR;//RX,TX,txrequest
    uint8 RTR;//0 no rtr, 1 rtr
    uint8 DLC;//0-15
    uint8 DataLength;//Data Length in bytes
    int64 TIME_NS;//Point in time, units: nanoseconds
    uint8 Data[64];//Data
    uint32 MsgFlags;//
    uint8 SIMULATED;//模拟 CAPL 节点已发送信息；可能的值：0（否）、1（是）,已针对 CANoe 1.2 版和 2.0 版的模拟设置进行修改，以区分真实和模拟组件。
    uint8 FDF;//CAN FD frame,0 CAN 2.0 frame,1 CAN FD frame
    uint8 BRS;//Bit Rate Switch,0 no BRS,1 BRS
    uint8 ESI;//错误状态指示器 读/写：0 = 未设置 1 = 设置 ,写：2 = CAN 控制器根据控制器状态自动设置 ESI
}CANFrame_t;


#endif